﻿/// <reference path="jquery-1.5.1-vsdoc.js" />

/* Mvc Framework Functions For DevEx  */

PageMethods.DevEx = {};

// Focused Row Index aktif satırın rowID değerini veriyor.
// Visible Top Index ise Page içerisindeki en üst satırın RowID değerini veriyor.
// ikisinin farkı ise o sayfadaki n. elemanın keys listesi içerisindeki index değerii veriyor.
PageMethods.DevEx.GetFocusedRowKeyValue = function (Grid) 
{
  var FocusedIndex = Grid.GetFocusedRowIndex();
  var PageTopIndex  = Grid.GetTopVisibleIndex();

  if (FocusedIndex != -1)
    return Grid.keys[FocusedIndex - PageTopIndex];
  else
    return null;
}

PageMethods.DevEx.FocusChanged = function (s, e) 
{
  var focusedRowKeyValue = PageMethods.DevEx.GetFocusedRowKeyValue(s);
  PageMethods.PositionChanged(PageMethods.objectID, focusedRowKeyValue);
}

PageMethods.DevEx.Selection = {};
PageMethods.DevEx.Selection.List = [];
PageMethods.DevEx.Selection.List.Count = 0;

PageMethods.DevEx.GetSelectionChangedValues = function (Grid) 
{
  PageMethods.DevEx.Selection.List = [];
  var result = "";

  //gv.keyName = RowID;
  Grid.GetSelectedFieldValues(Grid.keyName, function (values)
                                       {
                                         if ((values != null) && (typeof(values) != 'undefined') && (values != ''))
                                         {
                                           var i = 0;
                                           for (i = 0; i < values.length; i++) 
                                           {
                                             PageMethods.DevEx.Selection.List.push(values[i]);
                                           }
                                           result = PageMethods.DevEx.Selection.List.join(',');
                                         }
                                       });
  // PageMethods.SelectionChanged(PageMethods.objectID, result);
  return result;
}

PageMethods.DevEx.Selection.ClearValues = function () {
  PageMethods.DevEx.Selection.List = [];
  PageMethods.DevEx.Selection.List.Count = 0;
}

PageMethods.DevEx.OnSelectionChangedList = null;

PageMethods.DevEx.SelectionChangedEvent = function (s, e) {
  var result = "";

  s.GetSelectedFieldValues(s.keyName, function (values) {
    PageMethods.DevEx.Selection.ClearValues();

    if ((values != null) && (typeof (values) != 'undefined') && (values != '')) {
      var i = 0;
      for (i = 0; i < values.length; i++) {
        PageMethods.DevEx.Selection.List.push(values[i]);
        PageMethods.DevEx.Selection.List.Count++;
      }
      result = PageMethods.DevEx.Selection.List.join(',');
    }

    if (PageMethods.DevEx.OnSelectionChangedList != null)
      PageMethods.DevEx.OnSelectionChangedList(PageMethods.objectID, PageMethods.DevEx.Selection.List.Count);

  });

  return result;
}

// Satır seçimi için bu script gerekiyor.
// SimpleSelectionMode'ta dbl Click ile yada Choose butonu ile devreye giriyor.
// MultiSelection Moda'ta ise Choose butonuna tıklayınca devreye giriyor.
PageMethods.DevEx.ChooseRow = function (s, callback) {
  if (s.GetSelectedRowCount() === 0) {
    return;
  }

  if (s.isSimpleSelect) {
    PageMethods.DevEx.Selection.List = [];
    PageMethods.DevEx.Selection.List.push(PageMethods.DevEx.GetFocusedRowKeyValue(s));
  }

  // Eğer callback function gönderilmiş ise çağrılıyor...
  if (callback != null && callback != 'undefined')
    callback(PageMethods.DevEx.Selection.List);
}


PageMethods.DevEx.EvaluateObjectMethod = function (attributename, attributevalue, script)
{
  var Element = PageMethods.getElementByAttribute(attributename, attributevalue);
  if (Element) 
  {
    script = 'if (window.' + Element.id + ') window.' + Element.id + '.' + script 
                + '; else document.getElementById(\'' + Element.id + '\').' + script + ';';
    try {
      return eval(script);
    }
    catch (e) {
      GetEvalErrorMessage(script, null, e) 
    }
  }
}

PageMethods.DevEx.GetEvalErrorMessage = function (result, method, e)
{
	return (method ? 'Method = ' + method + '\r\n' : '') + 
		'ExceptionType = <Script Evaluate Error>\r\n' + 
		'Name = ' + e.name + '\r\n' + 
		'Message = ' + e.message + '\r\n' + 
		(e.number ? 'Number = ' + e.number + '\r\n' : '') + 
		(e.description ? 'Description = ' + e.description + '\r\n' : '') +
		'Script = \r\n\r\n' + result;
}




